﻿//给定一个长度为偶数的环形 01 字符串。（环形指，第一个字符和最后一个字符是相邻的）
//字符串初始每个字符都是白色。
//小葱想把一段连续区间染成红色，
//使得红色的字符'0'数量等于白色的字符'0'数量，
//红色的字符'1'数量等于白色的字符'1'数量。
// 问有多少种不同的染色方法？
//两个方案不同当且仅当存在一个某字符，在一个方案是染成红色，在另一个方案为白色。

//输入描述 :
//第一行输入一个正整数n，代表字符串长度。
//第二行输入一个长度为n 的 01 字符串（仅由字符'0'和字符'1'组成的字符串）
//数据范围2≤n≤300000 。保证n是偶数。
//输出描述 :
//合法的染色方案数。

//输入
//	2	//4		//4
//	11	//0101	//1100
//输出
//	2	//4		//2
//说明
//将第一个数字染红为一个方案。//任意一个长度为2的区间染红均合法。//可以将区间[2, 3] 染红，
//将第二个数字染红为一个方案。//								//或者将第一个和最后一个字符染红（因为是个环，所以第一个和最后一个也是相邻区间）。


#include<iostream>
#include<string>
using namespace std;
int n;
string s;
int main()
{
	cin >> n >> s;
	int sum[2] = { 0 }; // 统计字符串中所有 0 和 1 的个数
	for (auto ch : s)
	{
		sum[ch - '0']++;
	}

	int left = 0, right = 0, ret = 0, half = n / 2;
	int count[2] = { 0 }; // 统计窗⼝内 0 和 1 的个数
	while (right < n - 1) // 细节问题
	{
		count[s[right] - '0']++;
		while (right - left + 1 > half)
		{
			count[s[left++] - '0']--;
		}
		if (right - left + 1 == half)
		{
			if (count[0] * 2 == sum[0] && count[1] * 2 == sum[1])
			{
				ret += 2;
			}
		}
		right++;
	}

	cout << ret << endl;

	return 0;
}




